﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.ModelBinding;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.Practices.Unity;
using SISGEZATBZVisual.BusinessEntities;
using SISGEZATBZVisual.Service;

namespace SISGEZATBZVisual.Web.Maestros
{
    public partial class FrmEditarMatricula : System.Web.UI.Page
    {

        [Dependency]
        public IMatriculaService MatriculaService { get; set; }
        [Dependency]
        public INivelService NivelService { get; set; }
        [Dependency]
        public IGradoService GradoService { get; set; }
        [Dependency]
        public ISeccionService SeccionService { get; set; }
        [Dependency]
        public IAlumnoService AlumnoService { get; set; }
        [Dependency]
        public IApoderadoService ApoderadoService { get; set; }
        [Dependency]
        public IAñoAcademicoService AñoAcademicoService { get; set; }
        protected void Page_Load(object sender, EventArgs e)
        {

          

            if (!Page.IsPostBack)
            {

                var acc = Request.QueryString["acc"];
                var id = Request.QueryString["id"];

                if (acc != null && acc == "editar")
                {

                    var matricula = MatriculaService.GeMatricula(Int32.Parse(id));


                    ddlTipoDocumentoApoderado.SelectedValue = matricula.Alumno.Apoderado.TipoDeDocumento;
                    txtNroDocumentoApoderado.Text = matricula.Alumno.Apoderado.NroDocumento;
                    txtNombresCompletosApoderado.Text = matricula.Alumno.Apoderado.Nombres + " " +
                                                    matricula.Alumno.Apoderado.Apellidos;

                    ddlTipoDocumentoAlumno.SelectedValue = matricula.Alumno.TipoDeDocumento;
                    txtNroDocumentoAlumno.Text = matricula.Alumno.NroDocumento;
                    txtNombresCompletosAlumno.Text = matricula.Alumno.Nombres + " " + matricula.Alumno.Apellidos;



                    ddlNiveles.SelectedValue = matricula.Seccion.Grado.Nivel.Id.ToString();
                    ddlGrado.SelectedValue = matricula.Seccion.Grado.Id.ToString();
                    ddlSeccion.SelectedValue = matricula.Seccion.Id.ToString();

                    //DOCUMENTOS  <<----
                    //apoderado panel

                    ddlTipoDocumentoApoderadoPanel.SelectedValue = matricula.Alumno.Apoderado.TipoDeDocumento;
                    txtNroDocumentoApoderadoPanel.Text = matricula.Alumno.Apoderado.NroDocumento;
                    txtApellidosApoderadoPanel.Text = matricula.Alumno.Apoderado.Apellidos;
                    txtNombresApoderadoPanel.Text = matricula.Alumno.Apoderado.Nombres;
                    ddlGeneroApoderadoPanel.SelectedValue = matricula.Alumno.Apoderado.Genero;
                    txtFechaNacApoderadoPanel.Text = matricula.Alumno.Apoderado.FechaNacimiento + "";
                    txtDepartamentoApoPanel.Text = matricula.Alumno.Apoderado.Departamento;
                    txtProvinciaApoPanel.Text = matricula.Alumno.Apoderado.Provincia;
                    txtDiscritoApoPanel.Text = matricula.Alumno.Apoderado.Distrito;
                    txtDomicilioApoPanel.Text = matricula.Alumno.Apoderado.Domicilio;
                    txtTelefonoApoPanel.Text = matricula.Alumno.Apoderado.Telefono;
                    txtCentroTrabApoPanel.Text = matricula.Alumno.Apoderado.CentroDeTrabajo;


                    //alumno panel

                    ddlTipoDocumentoAlumnoPanel.SelectedValue = matricula.Alumno.TipoDeDocumento;
                    txtNroDocumentoAlumnoPanel.Text = matricula.Alumno.NroDocumento;
                    txtApellidosAlumnoPanel.Text = matricula.Alumno.Apellidos;
                    txtNombresAlumnoPanel.Text = matricula.Alumno.Nombres;
                    ddlGeneroAlumnoPanel.SelectedValue = matricula.Alumno.Genero;
                    txtFechaNacAlumnoPanel.Text = matricula.Alumno.FechaNacimiento + "";
                    txtDepartamentoAluPanel.Text = matricula.Alumno.Departamento;
                    txtProvinciaAluPanel.Text = matricula.Alumno.Provincia;
                    txtDiscritoAluPanel.Text = matricula.Alumno.Distrito;
                    txtDomicilioAluPanel.Text = matricula.Alumno.Domicilio;
                    txtTelefonoAluPanel.Text = matricula.Alumno.Telefono;


                }
                else if (acc != null && acc == "eliminar" && id != null)
                {
                    //var idHabitacion = Int32.Parse(id.ToString());

                    //HabitacionService.RemoveHabitacion(idHabitacion);

                    //Response.Redirect("Habitaciones.aspx");
                }

            

                if (id != null)
                {
                    Matricula matricula = MatriculaService.GeMatricula(Int32.Parse(id));

                    //var alumno = new Alumno();
                    // var apoderado = new Apoderado();

                    Cache.Insert("alumno", matricula.Alumno);
                    Cache.Insert("apoderado", matricula.Alumno.Apoderado);

                }




            }
        }
        public IEnumerable<AñoAcademico> GetAllAñosAcademicos()
        {
            return AñoAcademicoService.GetAllAñosAcademicos();
        }


        public IEnumerable<Nivel> GetAllNveles()
        {
            return NivelService.GetAllNveles();
        }

        public IEnumerable<Grado> GetGradosByNivelId([Control("ddlNiveles")]Int32? idNivel)
        {
            IEnumerable<Grado> grados = new List<Grado>();
            if (idNivel.HasValue)
            {
                return GradoService.GetGradosByNivelId(idNivel.Value);
            }
            return grados.AsEnumerable();
        }

        public IEnumerable<Seccion> GetSeccionesByGradoId([Control("ddlGrado")]int? idGrado)
        {
            IEnumerable<Seccion> secciones = new List<Seccion>();

            if (idGrado.HasValue)
            {
                return SeccionService.GetSeccionesByGradoId(idGrado.Value);
            }
            return secciones.AsEnumerable();
        }

        protected void btnBuscarDniApoderado_Click(object sender, EventArgs e)
        {
            var apoderado = ApoderadoService.GetApoderadoByTipoDocumentoNroDocumento(ddlTipoDocumentoApoderado.Text,
                 txtNroDocumentoApoderado.Text);


            if (apoderado != null)
            {
                txtNombresCompletosApoderado.Text = apoderado.Nombres + " " + apoderado.Apellidos;
                msjAlertaApoderado.Text = "";

                var apoderadoCache = Cache.Get("apoderado") as Apoderado;
                apoderadoCache = apoderado;
                Cache.Insert("apoderado", apoderadoCache);

            }
            else
            {
                txtNombresCompletosApoderado.Text = "";
                msjAlertaApoderado.Text = "El apoderado no existe";

            }
        }

        protected void btnBuscarDniAlumno_Click(object sender, EventArgs e)
        {
            var alumno = AlumnoService.GetAlumnoByTipoDocumentoNroDocumento(ddlTipoDocumentoAlumno.Text,
                 txtNroDocumentoAlumno.Text);
            if (alumno != null)
            {
                txtNombresCompletosAlumno.Text = alumno.Nombres + " " + alumno.Apellidos;
                msjAlertaAlumno.Text = "";

                var alumnoCache = Cache.Get("alumno") as Alumno;
                alumnoCache = alumno;
                Cache.Insert("alumno", alumno);
            }
            else
            {
                txtNombresCompletosAlumno.Text = "";
                msjAlertaAlumno.Text = "El alumno no existe";
            }

        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {

        }

        protected void ddlTipoDocumentoApoderadoPanel_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void ddlGeneroApoderadoPanel_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void ddlTipoDocumentoAlumnoPanel_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void ddlGeneroAlumnoPanel_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void btnGuardarApoderadoPanel_Click(object sender, EventArgs e)
        {

            var apoderado = ApoderadoService.GetApoderadoByTipoDocumentoNroDocumento(ddlTipoDocumentoApoderadoPanel.Text,
        txtNroDocumentoApoderadoPanel.Text);



            if (apoderado == null)
            {
                var apoderadoAGurdar = new Apoderado()
                {
                    TipoDeDocumento = ddlTipoDocumentoApoderadoPanel.SelectedValue,
                    NroDocumento = txtNroDocumentoApoderadoPanel.Text,
                    Apellidos = txtApellidosApoderadoPanel.Text,
                    Nombres = txtNombresApoderadoPanel.Text,
                    Genero = ddlGeneroApoderadoPanel.SelectedValue,
                    FechaNacimiento = DateTime.Parse(txtFechaNacApoderadoPanel.Text),
                    Departamento = txtDepartamentoApoPanel.Text,
                    Provincia = txtProvinciaApoPanel.Text,
                    Distrito = txtDiscritoApoPanel.Text,
                    Domicilio = txtDomicilioApoPanel.Text,
                    Telefono = txtTelefonoApoPanel.Text,
                    CentroDeTrabajo = txtCentroTrabApoPanel.Text,
                    Estado = true

                };
                // ApoderadoService.RegistrarApoderado(apoderadoAGurdar);
                txtNroDocumentoApoderado.Text = apoderadoAGurdar.NroDocumento;
                txtNombresCompletosApoderado.Text = apoderadoAGurdar.Nombres + " " + apoderadoAGurdar.Apellidos;
                ddlTipoDocumentoApoderado.SelectedValue = ddlTipoDocumentoApoderadoPanel.SelectedValue;
                msjAlertaApoderado.Text = "";
                msjAlertaApoderadoPanel.Text = "";


                var apoderadoCache = Cache.Get("apoderado") as Apoderado;
                apoderadoCache = apoderadoAGurdar;

                Cache.Insert("apoderado", apoderadoCache);


            }
            else
            {
                msjAlertaApoderadoPanel.Text = "El apoderado ya está registrado";
                btnModificarApoderado_ModalPopupExtender.Show();
                
            }

        }

        protected void btnGuardarAlumnoPanel_Click(object sender, EventArgs e)
        {

        }
    }
}